<template>
  <div>
    <loading :state="loading"></loading>
    <div class="a-body" v-for="(item,key) in address" :key="key" @click="toOrderDetail(item)">
        <div class="left">
          <div class="name">{{item.name}}</div>
          <div class="isdefault" v-if="item.isDefault === 1">默认</div>
        </div>
        <div class="mid">
          <div class="phone">{{item.phone}}</div>
          <div class="address">{{item.province + item.city + item.area + item.detail}}</div>
        </div>
        <div class="right"><span @click.stop="toEditAddress(item)">编辑</span></div>
    </div>
    <div class="out">
      <div class="btn-reverse" @click="toEditAddress()">新建地址</div>
    </div>
  </div>
</template>

<script>
  export default {
    components: {},
    data() {
      return {
        address: [],
        loading: true
      };
    },
    methods: {
      toEditAddress(res) {
        this.$router.push({
          name: 'edit-address', query: res
        });
      },
      toOrderDetail(res) {
        this.$router.push({
          name: 'order-detail', query: res
        });
      }
    },
    watch: {
      // 监听具体数据变化，并做相应的处理
    },
    beforeCreate() {
      // 可以在这加个loading事件，在加载实例时触发
      // 这个阶段实例的data、methods是读不到的
    },
    created() {
      // 初始化数据，如在这结束loading事件，异步ajax请求也适宜在这里调用
      // 实例创建后：这个阶段已经完成了数据观测(data observer)，属性和方法的运算， watch/event 事件回调。
      // mount挂载阶段还没开始，"el" 属性目前不可见，数据并没有在DOM元素上进行渲染
    },
    beforeMount() {
      // 相关的 render 函数首次被调用。
    },
    mounted() {
      this.$UserReq.address('all').then(res => {
        this.loading = false;
        this.address = res.data;
      }, () => {
        this.loading = false;
      });
      // 挂载元素，获取到DOM节点
      // el选项的DOM节点 被新创建的 vm的el 替换，并挂载到实例上去之后调用此生命周期函数。此时实例的数据在DOM节点上进行渲染
    },
    beforeUpdate() {
      // 数据更新时调用，但不进行DOM重新渲染，在数据更新时DOM没渲染前可以在这个生命函数里进行状态处理
    },
    updated() {
      //  如果对数据统一处理，在这里写上相应函数
      // 这个状态下数据更新并且DOM重新渲染，当这个生命周期函数被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。当实例每次进行数据更新时updated都会执行
    },
    beforeDestroy() {
      // 可以做一个确认停止事件的确认框
    },
    destroyed() {
      // Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，所有的事件监听器会被移除，所有的子实例也会被销毁
    }
  };

</script>

<style scoped lang="stylus" rel="stylesheet/stylus">
  @import "../../assets/stylus/main.styl"
  .a-body
    display flex
    background-color #fff
    padding vw(15)
    justify-content space-between
    line-height 1.5
    border-radius vw(5)
    margin 0 vw(15) vw(10)
    align-items center
    .left
      .name
        font-size word14
        color #333
        width vw(55)
        text-align center
        ellipsis()
      .isdefault
        color main-color
        font-size word12
        width vw(40)
        text-align center
        height vw(20)
        line-height vw(20)
        border 1px solid main-color
        border-radius vw(10)
        margin: 0 auto;
        box-sizing: border-box;
    .mid
      width vw(200);
      .phone
        font-size word12
        color #333
      .address
        font-size word12
        color #999
        margin-top 5px
    .right
      color main-color
      width vw(40)
      text-align center
      height vw(20)
      line-height vw(20)
      border 1px solid main-color
      border-radius vw(10)
      font-size vw(14)
  .out
    out()
    .btn-reverse
      btn-primary()
</style>
